package com.choichumgming.rentcat.service;


import com.choichumgming.rentcat.domain.PmsProductQueryParam;
import com.choichumgming.rentcat.model.PmsProduct;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 商品管理Service
 */
public interface PmsProductService {
    /**
     * 创建商品
     */
    @Transactional(isolation = Isolation.DEFAULT,propagation = Propagation.REQUIRED)
    int create(PmsProduct product);

    /**
     * 更新商品
     */
    @Transactional
    int update(Long productId, PmsProduct productParam);

    /**
     * 单个修改商品上架状态
     */
    int updateProductPublishStatus(Long ids, Integer publishStatus);

    PmsProduct getProduct(Long productId);

    /**
     * 单个修改商品出租状态
     */
    int updateRentStatus(Long ids, Integer rentStatus);

    /**
     * 分页查询商品
     */
    List<PmsProduct> list(PmsProductQueryParam productQueryParam, Integer pageSize, Integer pageNum);

    /**
     * 批量修改商品上架状态
     */
    int updateProductsPublishStatus(List<Long> ids, Integer publishStatus);


    /**
     * 批量删除商品
     */
    int delete(List<Long> ids);

    /**
     * 根据商品名称或者货号模糊查询
     */
    List<PmsProduct> list(String keyword);


    /**
     * 根据用户Id获得ProductList
     */
    List<PmsProduct> getUserProductList( Long userId);



    /**
     * @Description : 根据category_id获得商品
     * @Return :
     * @Author : choichumgming
     * @Date : 14/3/2020 12:37
    */
    List<PmsProduct> getProductListByCategoryId(Long categoryId,int pageNum, int pageSize);

    /**
     * @Description : 随机获得带有Video的商品
    */
    List<PmsProduct> getProductsWithVideo();

    /**
     * 获得首页推荐商品
     * @return
     */
    List<PmsProduct> getHomeProductList();

    /**
     * 获得banner
     */
    List<PmsProduct> getBannnerList();
}
